Matlab Codes

Chapter 3

Matlab code 3.4: Matlab file “Figure 3-15.m”

%--------------------------------------------------------------------

% This code can be used to generate Figure 3.15

%--------------------------------------------------------------------

 

clear all

close all

%% the range migration effect and the range wrapping effect of micromotion point(SFCS radar)

c = 3e8;

j = sqrt(-1);

f0 = 35e9; % carrier frequency of transmitted signal

tr = 7.8125e-5; % subpulse repetition interval

t1 = tr/64; % time duration of subpulse

df = 4.6875e6; % subpulse frequency increment

N = 64; % number of subpulses in a burst

B = 300e6; % synthetic bandwidth

B1 = B/N; % bandwidth of the subpulse

mu = B1/t1; % frequency modulation rate

Rd0 = 5; % distance between the scatterers and reference point

v = [15 0 -15 -25]; % translational velocity of target

% v = [0,19,-15,-60]; % Figure 3.15(b)

R = 5000; % distance between the reference point and radar

rmax = R+Rd0+10; % the minmum detectable distance

rmin = R+Rd0-10; % the maximum detectable distance

ts = 2*rmin/c; % the starting point of the time sampling

te = 2*rmax/c+t1; % the ending point of the time sampling

dt = 1/B1; % time sampling interval

nt = 2*ceil((te-ts)/(2*dt)); % number of time sampling

df1 = 0:B1/nt:B1*(nt-1)/nt;

tk = ts+(0:nt-1)*dt; % fast time

s = zeros(length(tk),N); % echo signal

s0 = zeros(length(tk),N); % reference signal

Rv = zeros(1,length(v));

for i = 1:N

    for m = 1:length(v)

        Rv(m) = R+Rd0+(i-1)*tr*v(m);

        td = (tk-2*Rv(m)/c)';

        s(:,i) = s(:,i)+exp(j*pi*mu.*td.^2+j*2*pi*(f0+(i-1)*df).*td).*(td>=0&td<=t1);

    end

    td0 = (tk-2*R/c)';

    s0(:,i) = s0(:,i)+exp(j*pi*mu.*td0.^2+j*2*pi*(f0+(i-1)*df).*td0).*(td0>=0&td0<=t1);

end

sdt = s.*conj(s0);

sdtf = ifft(fft(sdt).*(exp(-3*j*pi*df1'.^2/mu)*ones(1,N))); % remove the residual video phase(RVP)

sdcp = fftshift(fft(sdtf),1); % coarse range profile

sdcm = sdcp(nt/2+1,:);

sdhp = fftshift(fft(sdcm)); % high-resolution range profile

figure

y = -(-N/2+1:N/2)*c/(2*N*df)+0.5;

plot(y,abs(sdhp)/max(abs(sdhp)))

xlabel('Range (m)')

ylabel('Normalized magnitude')

axis([-16 16 0 1.1])